Skip to content

Conversation

@ChristianPavilonis
Copy link
Collaborator

@ChristianPavilonis ChristianPavilonis commented Dec 16, 2025

Closes #139


### Auction Flow
A named configuration that defines:
- Which providers participate
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirming "providers" means wrappers?

- Which providers participate
- Execution strategy (parallel, waterfall, etc.)
- Timeout settings
- Optional mediator
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mediator = final ad-server?

strategy = "parallel_mediation"
bidders = ["prebid", "aps"]
mediator = "gam"
timeout_ms = 2000
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

timeout meaning the time for PBS, APS etc to come back to TS right? This does not include any GAM RT's or think time?


**Flow:**
1. Prebid and APS run in parallel
2. Both return their bids simultaneously
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better way to say is that "Both return their bids within a time window" as they'll never be simultaneous


**Flow:**
1. All bidders run in parallel
2. Highest bid wins
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may be addressed elsewhere, but AFAIK APS doesn't return a clear text creative bid, so we'll need to understand what the decryption of the TAM value looks like


**Flow:**
1. Try Prebid first
2. If Prebid returns no bids, try APS
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's discuss this on a call as it's not really a realistic scenario where PBS comes back with nothing and I don't know any pubs interested in waterfalls these days. We also need to make sure we are considering bid floors set by publishers here. Maybe I'm missing context?

aram356

This comment was marked as outdated.

@ChristianPavilonis ChristianPavilonis force-pushed the feature/auction-integrations branch from 92c19a7 to 39cb7dc Compare January 9, 2026 00:33
@ChristianPavilonis ChristianPavilonis marked this pull request as ready for review January 12, 2026 19:24
@ChristianPavilonis ChristianPavilonis force-pushed the feature/auction-integrations branch from 39cb7dc to c82ffd3 Compare January 13, 2026 16:29
Copy link
Collaborator

@aram356 aram356 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Good start

  1. Please address tests and formatting
  2. I would like to re-review


let decoded = match STANDARD.decode(encoded) {
Ok(bytes) => bytes,
Err(_) => return 2.50,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔧 Add this as setting for default

🤔 We should logs errors

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actually because eventually we're sending the encoded price to gam shouldn't I move any decode logic to the mock service anyway?

timeout_ms = 800

# Mock GAM Configuration (for testing)
[integrations.gam_mock]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔧 Why we need this because mocking is separated into different service

///
/// Initialized once on first access with the provided settings.
/// All providers are registered during initialization.
static GLOBAL_ORCHESTRATOR: OnceLock<AuctionOrchestrator> = OnceLock::new();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⛏️ Would be harder to test with these global singletons

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

As developer I want to register header bidding integrations to perform auctions

4 participants